﻿using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using MJM.RPP.EntidadesNegocio;
using MJM.SPP.EntidadesNegocio;
using MJM.Principal;
using MJM.SCA.EntidadesNegocio;

namespace wRegPadron
{
    public partial class Login : System.Web.UI.Page
    {
        public AudiService.wsAud_Acc servicio = new AudiService.wsAud_Acc();

        private void InsertarLog(String prm2, String prm3, int resultado, string mensaje)
        {
            System.Text.ASCIIEncoding encoding = new System.Text.ASCIIEncoding();
            Byte[] bytes = encoding.GetBytes(prm3);
            servicio.Inser_Log(prm2, Convert.ToBase64String(bytes), resultado, mensaje, "Gestión", ObtieneIP());
        }

        private String ObtieneIP()
        {
            string ipusuario = System.Web.HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];
            if (ipusuario == null)
                ipusuario = "";
            return ipusuario;
        }

        private void AbreVentanaForm(string ventana)
        {
            string Clientscript = "<script>open('" + ventana + "','ventana','top=0,left=0,width=1024,height=650,status=no,resizable=no,scrollbars=yes')</script>";

            if (!Page.ClientScript.IsStartupScriptRegistered("WOpen"))
            {
                Page.ClientScript.RegisterStartupScript(Page.GetType(), "WOpen", Clientscript);
            }
        }

        private void MuestraAlerta(String mensaje)
        {
            string key = "MyAlert";
            string javascript = "MsjUsu('" + mensaje + "')";

            if (!Page.ClientScript.IsStartupScriptRegistered(key))
            {
                Page.ClientScript.RegisterStartupScript(Page.GetType(), key, javascript, true);
            }
        }

        bool ValidaRestricciones(String Usuario)
        {
            bool val = false;
            bool dia = false, hora = false, fecha = false;
            RestriccionUsuarioEN objRestriccionUsuarioEN = MediadorCN.GetRestriccionUsuario().Obtener(Usuario);
            if (objRestriccionUsuarioEN != null)
            {
                if (DateTime.Now.DayOfWeek.ToString() == "Monday" && objRestriccionUsuarioEN.RESCUE_inDIALUN == 1)
                    dia = true;

                if (DateTime.Now.DayOfWeek.ToString() == "Tuesday" && objRestriccionUsuarioEN.RESCUE_inDIAMAR == 1)
                    dia = true;

                if (DateTime.Now.DayOfWeek.ToString() == "Wednesday" && objRestriccionUsuarioEN.RESCUE_inDIAMIE == 1)
                    dia = true;

                if (DateTime.Now.DayOfWeek.ToString() == "Thursday" && objRestriccionUsuarioEN.RESCUE_inDIAJUE == 1)
                    dia = true;

                if (DateTime.Now.DayOfWeek.ToString() == "Friday" && objRestriccionUsuarioEN.RESCUE_inDIAVIE == 1)
                    dia = true;

                if (DateTime.Now.DayOfWeek.ToString() == "Saturday" && objRestriccionUsuarioEN.RESCUE_inDIASAB == 1)
                    dia = true;

                if (DateTime.Now.DayOfWeek.ToString() == "Sunday" && objRestriccionUsuarioEN.RESCUE_inDIADOM == 1)
                    dia = true;
                if (DateTime.Now.Hour >= objRestriccionUsuarioEN.RESCUE_inHORINI && DateTime.Now.Hour < objRestriccionUsuarioEN.RESCUE_inHORFIN)
                    hora = true;
                string smes = "", sdia = "", sfecha1 = "";

                smes = DateTime.Now.Date.Month.ToString();
                if (smes.Length < 2)
                    smes = "0" + smes;

                sdia = DateTime.Now.Date.Day.ToString();
                if (sdia.Length < 2)
                    sdia = "0" + sdia;
                sfecha1 = DateTime.Now.Year.ToString() + smes + sdia;

                if (Convert.ToInt32(sfecha1) <= Convert.ToInt32(objRestriccionUsuarioEN.RESCUE_chFECCAD))
                    fecha = true;

                if (dia && hora && fecha)
                    val = true;
            }
            else
                return true;
            return val;
        }

        protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
                System.Web.HttpBrowserCapabilities browser = Request.Browser;
                if (browser.Browser == "IE")
                {
                    pNavegador.Visible = true;
                }
                else
                {
                    pNavegador.Visible = false;
                }
                try
                {
                    if (Session["Activado"].ToString() == "1")
                        lblMensajeCuenta.Text = "Su cuenta ha sido activada correctamente";
                    if (Session["Activado"].ToString() == "2")
                        lblMensajeCuenta.Text = "Su cuenta ya ha sido activada.";
                    if (Session["Activado"].ToString() == "3")
                        lblMensajeCuenta.Text = "Error al activar la cuenta";
                }
                catch
                {
                    lblMensajeCuenta.Text = "";
                }
            }
        }

        protected void btnIngresar_Click(object sender, EventArgs e)
        {
            System.Web.HttpBrowserCapabilities browser = Request.Browser;
            if (browser.Browser != "IE")
            {
                string mes, dia;
                if (DateTime.Now.Month < 10)
                    mes = "0" + DateTime.Now.Month.ToString();
                else mes = DateTime.Now.Month.ToString();

                if (DateTime.Now.Day < 10)
                    dia = "0" + DateTime.Now.Day.ToString();
                else dia = DateTime.Now.Day.ToString();
                LogTramiteEN objLogTramiteEN = new LogTramiteEN();
                bool val = false;
                // OpenWin();
                bool muni = true;
                PersonaE pere = MediadorCN.GetUsuario().UsuarioTramite(txtUsuario.Text, txtClave.Text);
                if (pere == null)
                {
                    pere = MediadorCN.GetUsuario().UsuarioLogin(txtUsuario.Text, txtClave.Text);
                    muni = false;
                }
                if (pere != null)
                {
                    if (muni)
                    {
                        val = ValidaRestricciones(txtUsuario.Text);
                        FormsAuthentication.RedirectFromLoginPage(txtUsuario.Text, true);
                        Session.Add("muni", 1);
                        Session.Add("UsuLog", txtUsuario.Text);
                        Session.Add("Usuario", txtUsuario.Text);
                        Session.Add("Pass", MediadorCN.GetUsuario().Encripta(txtClave.Text));
                        lblErrorLogueo.Text = "";
                    }
                    else
                    {
                        val = true;
                        FormsAuthentication.RedirectFromLoginPage(txtUsuario.Text, true);
                        Session.Add("muni", 0);
                        Session.Add("UsuLog", pere.IDPersona);
                        Session.Add("Usuario", txtUsuario.Text);
                        Session.Add("Pass", MediadorCN.GetUsuario().Encripta(txtClave.Text));
                        lblErrorLogueo.Text = "";
                    }
                    if (val)
                    {
                        objLogTramiteEN.LOGAW_chFECMOD = DateTime.Now.Year.ToString() + mes + dia;
                        objLogTramiteEN.LOGAW_chFECREG = DateTime.Now.ToShortDateString();
                        objLogTramiteEN.LOGAW_chHORREG = DateTime.Now.ToShortTimeString();
                        objLogTramiteEN.LOGAW_chIPCLIEN = ObtieneIP();
                        objLogTramiteEN.LOGAW_chPARDOS = "";
                        objLogTramiteEN.LOGAW_chPARUNO = txtUsuario.Text;
                        objLogTramiteEN.LOGAW_chPARTRE = "Correcto";
                        objLogTramiteEN.LOGAW_inHORMOD = DateTime.Now.Hour;
                        objLogTramiteEN.LOGAW_chNOMAPL = "Login padrón";
                        MediadorCN.GetLogTramite().Insertar(objLogTramiteEN);
                        InsertarLog(txtUsuario.Text, txtClave.Text, 1, "Ingreso correcto");
                        Session.Timeout = 60;
                        Response.Redirect("Inicio.aspx");
                    }
                    else
                    {
                        objLogTramiteEN.LOGAW_chFECMOD = DateTime.Now.Year.ToString() + mes + dia;
                        objLogTramiteEN.LOGAW_chFECREG = DateTime.Now.ToShortDateString();
                        objLogTramiteEN.LOGAW_chHORREG = DateTime.Now.ToShortTimeString();
                        objLogTramiteEN.LOGAW_chIPCLIEN = ObtieneIP();
                        objLogTramiteEN.LOGAW_chPARDOS = txtClave.Text;
                        objLogTramiteEN.LOGAW_chPARUNO = txtUsuario.Text;
                        objLogTramiteEN.LOGAW_chPARTRE = "No se encuentra dentro del horario de acceso permitido.";
                        objLogTramiteEN.LOGAW_inHORMOD = DateTime.Now.Hour;
                        objLogTramiteEN.LOGAW_chNOMAPL = "Login padrón";
                        MediadorCN.GetLogTramite().Insertar(objLogTramiteEN);
                        InsertarLog(txtUsuario.Text, txtClave.Text, 0, "No se encuentra dentro del horario de acceso permitido.");
                        lblErrorLogueo.Text = "No se encuentra dentro del horario de acceso permitido.";
                        txtUsuario.Text = "";
                    }
                }
                else
                {
                    objLogTramiteEN.LOGAW_chFECMOD = DateTime.Now.Year.ToString() + mes + dia;
                    objLogTramiteEN.LOGAW_chFECREG = DateTime.Now.ToShortDateString();
                    objLogTramiteEN.LOGAW_chHORREG = DateTime.Now.ToShortTimeString();
                    objLogTramiteEN.LOGAW_chIPCLIEN = ObtieneIP();
                    objLogTramiteEN.LOGAW_chPARDOS = txtClave.Text;
                    objLogTramiteEN.LOGAW_chPARUNO = txtUsuario.Text;
                    objLogTramiteEN.LOGAW_chPARTRE = "Usuario o clave incorrectos.";
                    objLogTramiteEN.LOGAW_inHORMOD = DateTime.Now.Hour;
                    objLogTramiteEN.LOGAW_chNOMAPL = "Login padrón";
                    MediadorCN.GetLogTramite().Insertar(objLogTramiteEN);
                    InsertarLog(txtUsuario.Text, txtClave.Text, 0, "Usuario o clave incorrectos.");
                    lblErrorLogueo.Text = "Usuario o clave incorrectos.";
                    txtUsuario.Text = "";
                }
            }
            else
            {
                lblErrorLogueo.Text = "Para iniciar sesión debe cambiar de navegador.";
            }
        }
    }
}
